package com.cnam.smcl.gae.model;

import java.io.Serializable;

import javax.persistence.Id;

public class User implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -404797073232886614L;
	@Id
	private Long id;
	private String m_pseudo;
	private int m_level;
	private double m_score;
	private int m_skillPoint;
	private int money;
	private int m_exp;
	private int m_live;
	// TODO Metre la bonne valeur
	public static final int INIT_MONEY = 800000000;
	private static final int INIT_LIVES = 1;

	/**
	 * constructeur vide pour la serialisation
	 */
	public User() {

	}

	/**
	 * Constructeur de la Class User
	 * 
	 * @param m_pseudo
	 * @param level
	 * @param score
	 * @param m_skillPoint
	 */
	public User(String m_pseudo, int level, double score, int m_skillPoint) {
		super();
		this.m_pseudo = m_pseudo;
		this.m_level = level;
		this.m_score = score;
		this.m_skillPoint = m_skillPoint;
		this.m_exp = 0;
		this.m_live = INIT_LIVES;
	}

	/**
	 * Constructeur de la Class User
	 */
	public User(int money) {
		this.money = money;
		this.m_score = 0;
		this.m_skillPoint = 0;
		this.m_level = 1;
		this.m_exp = 0;
		this.m_live = INIT_LIVES;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * Retourne le Pseudo du joueur
	 * 
	 * @return the m_pseudo
	 */
	public String getM_pseudo() {
		return m_pseudo;
	}

	/**
	 * Set le pseudo du joueur
	 * 
	 * @param m_pseudo
	 *            the m_pseudo to set
	 */
	public void setM_pseudo(String m_pseudo) {
		this.m_pseudo = m_pseudo;
	}

	/**
	 * Retourne le level du joueur
	 * 
	 * @return the m_level
	 */
	public int getM_level() {
		return m_level;
	}

	/**
	 * Set le level du joueur
	 * 
	 * @param m_level
	 *            the m_level to set
	 */
	public void setM_level(int m_level) {
		this.m_level = m_level;
	}

	/**
	 * Retourne le score du joueur
	 * 
	 * @return the m_score
	 */
	public double getM_score() {
		return m_score;
	}

	/**
	 * @param m_score
	 *            the m_score to set
	 */
	public void setM_score(double m_score) {
		this.m_score = m_score;
	}

	/**
	 * Retourne le nombre de point du joueur
	 * 
	 * @return the m_skillPoint
	 */
	public int getM_skillPoint() {
		return m_skillPoint;
	}

	/**
	 * Set le nombre de point du joueur
	 * 
	 * @param m_skillPoint
	 *            the m_skillPoint to set
	 */
	public void setM_skillPoint(int m_skillPoint) {
		this.m_skillPoint = m_skillPoint;
	}

	/**
	 * Retourne l'argent du joueur
	 * 
	 * @return money
	 */
	public int getMoney() {
		return money;
	}

	/**
	 * Set l'argent du joueur
	 * 
	 * @param money
	 */
	public void setMoney(int money) {
		this.money = money;
	}

	/**
	 * Set l'expérience du joueur
	 * 
	 * @param m_exp
	 */
	public void setM_exp(int m_exp) {
		this.m_exp = m_exp;
	}

	/**
	 * Retourne l'experience du joueur
	 * 
	 * @return m_exp
	 */
	public int getM_exp() {
		return m_exp;
	}

	/**
	 * Retourne le pourcentage du de l'experience gagné au cours du level
	 * 
	 * @return m_exp/(m_level*100)
	 */
	public int getPourcentageNiveau() {
		return m_exp / (m_level * 100);
	}

	/**
	 * @param m_live
	 *            the m_live to set
	 */
	public void setLive(int m_live) {
		this.m_live = m_live;
	}

	/**
	 * @return the m_live
	 */
	public int getLive() {
		return m_live;
	}
}
